/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.FuncionarioDaoLocal;
import entities.Funcionario;
import exception.FuncionarioExistsException;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;

/**
 *
 * @author Sostenes, Thiago, Felipe
 */
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class FuncionarioController implements FuncionarioControllerLocal {

    @EJB
    private FuncionarioDaoLocal funcionarioDao;

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void persist(Funcionario funcionario) throws FuncionarioExistsException {
        if (funcionarioDao.exists(funcionario)) {
            throw new FuncionarioExistsException(funcionario);
        }
        funcionarioDao.create(funcionario);
    }

    @Override
    public List<Funcionario> list() {
        return funcionarioDao.list();
    }

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void remove(Funcionario funcionario) {
        funcionarioDao.remove(funcionario);
    }

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void update(Funcionario funcionario) {
        funcionarioDao.update(funcionario);
    }

    @Override
    public Funcionario createFuncionario() {
        return new Funcionario();
    }
}
